package com.yungu.swift.assets.driver.service;

import com.yungu.swift.assets.driver.model.dto.CarDto;
import com.yungu.swift.assets.driver.model.dto.CarInsuranceDto;
import com.yungu.swift.assets.driver.model.param.AdminCarPageParam;
import com.yungu.swift.assets.driver.model.vo.CarExportVo;
import com.yungu.swift.base.ResponseData;
import com.yungu.swift.base.service.BaseService;

import java.util.List;
import java.util.Map;


/**
 * CarService
 * 重写 queryPage add edit get
 **/

public interface CarService extends BaseService<CarDto> {


    /**
     * 查询车辆信息和车型
     *
     * @param map 参数
     * @return List
     */
    ResponseData<List<CarDto>> listExtend(Map<String, Object> map);


    /**
     * 后台-获取app/区域代理/公司下的车辆总数
     *
     * @param appid             参数
     * @param agentUuid 参数
     * @param companyUuid       参数
     * @return int
     */
    ResponseData<Integer> getCarCount(String appid, String agentUuid, String companyUuid);


    /**
     * 查询导出数据
     *
     * @param carPageParam 参数
     * @return List
     */
    ResponseData<List<CarExportVo>> listExport(AdminCarPageParam carPageParam);

    /**
     * 导入车辆
     *
     * @param carDtoList          车辆基本信息
     * @param carInsuranceDtoList 车辆保险信息
     * @return AjaxList
     */
    ResponseData<Boolean> importCar(List<CarDto> carDtoList, List<CarInsuranceDto> carInsuranceDtoList, List<CarDto> updateCarDtoList, List<CarInsuranceDto> updateCarInsuranceDtoList);

    /**
     * 查询车辆关联的司机信息
     *
     * @param params 参数
     * @return AjaxList
     */
    ResponseData<List<Map<String, String>>> getDriInfo(Map<String, Object> params);

    /**
     * 车牌号模糊检索
     *
     * @param map
     * @return
     */
    ResponseData<List<CarDto>> plateNumSearch(Map<String, Object> map);

    /**
     * 更新实体
     *
     * @param carDto CarDto
     * @return int
     */
    int update(CarDto carDto);
}
